Add FreeBSD platform support#204
Conversation
|
I have no idea why that OSX 3.11 job failed. Clang itself segfaulted, it didn't even emit an error, so I think it's unrelated to this change. In my own fork (which also has my own forked pywrap, so slightly different), this check passes. pywrap sister PR here: CadQuery/pywrap#62 action run with passing osx 3.11 here: https://github.com/elliejs/OCP/actions/runs/28189561694/job/83530983484 |
|
yeah I only changed the commit message but it all passes now, yay |
|
I would expect no changes needed in |
Add build-job-freebsd.yml CI workflow for generating and compiling OCP bindings on FreeBSD 15.0 using vmactions/freebsd-vm. FreeBSD has no conda-forge packages, so all dependencies come from the FreeBSD pkg system (latest repo). The workflow follows the same two-phase structure (generate → compile) as the other platforms, with source caching between phases and a combined sources+stubs artifact upload. The clang Python bindings are pip-installed because the FreeBSD pkg version (11.0) is too old to drive libclang 22 from llvm-devel. Add a [FreeBSD] platform section to ocp.toml with system include paths and a FreeBSD symbol manifest. Update dump_symbols.py to support lief <0.14 (FreeBSD pkg ships 0.12.3), which uses lief.EXE_FORMATS instead of lief.Binary.FORMATS. The existing code used p.FORMATS which only works on 0.14+. The fallback (getattr + or) now supports both. Also reorder the lief.parse() None check before accessing p.format (was a crash on parse failure), add an empty-string guard for the semicolon-split lib list, and detect FreeBSD as a distinct ELF platform via platform.system(). Add FreeBSD case to CMakeLists.txt platform detection and FreeBSD job entry to bindings.yml. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Did some more testing. Turns out they're unnecessary. I added them early in my debugging because I thought they were necessary for some forward declaration errors I was having, but I fixed it in pywrap by properly qualifying types. I've reverted them |
Summary
build-job-freebsd.ymlCI workflow for FreeBSD 15.0 usingvmactions/freebsd-vm, with all dependencies from FreeBSDpkg(no conda-forge packages exist for FreeBSD). Follows the same two-phase generate/compile structure as the other platforms.[FreeBSD]platform section toocp.tomlwith system include paths and FreeBSD symbol manifest.dump_symbols.pyfor lief <0.14 compatibility (lief.EXE_FORMATSfallback), fix a crash whenlief.parse()returnsNone, and detect FreeBSD as a distinct ELF platform.CMakeLists.txtplatform detection and job entry tobindings.yml.Notes
py311-clang11.0) is too old to drivelibclang 22fromllvm-devel.Test plan
import OCPtest passes in CI🤖 Generated with Claude Code